package com.hgsf.service;

import com.hgsf.entity.*;
import com.hgsf.util.Page;

import java.util.List;
import java.util.Map;
import java.util.Vector;

public interface AdminService {
	/**
	 * 验证登录
	 * 
	 * @param admin
	 * @return
	 */
	public Admin login(Admin admin);

	/**
	 * 注册管理员
	 * 
	 * @param admin
	 * @return
	 */
	public boolean register(Admin admin);

	/**
	 * 录入课程
	 * 
	 * @param course
	 * @return
	 */
	public boolean addCourse(Course course);

	/**
	 * 查看所有课程
	 * 
	 * @return
	 */
	public List<Course> queryCourse();

	/**
	 * 查看所有课程
	 * 
	 * @return
	 */
	public List<Vector> queryCourseToVector();

	/**
	 * 查询所有老师
	 * 
	 * @return
	 */
	public List<Teacher> queryTeacher();

	/**
	 * 通过教师名称查询教师
	 * 
	 * @param tname
	 * @return
	 */
	public Teacher queryTeacherByTname(String tname);

	/**
	 * 查询所有专业
	 * 
	 * @return
	 */
	public List<Major> queryMajor();

	/**
	 * 修改课程信息
	 * 
	 * @param course
	 * @return
	 */
	public boolean alterCourse(Course course);

	/**
	 * 条件查找课程
	 * 
	 * @param condition
	 * @return
	 */
	public List<Course> queryCourseByCondition(String condition);

	/**
	 * 删除课程
	 * 
	 * @param cid
	 * @return
	 */
	public boolean delectCourse(int cid);

	/**
	 * 录入学生信息
	 * 
	 * @param s
	 * @return
	 */
	boolean addStudent(Student s);

	/**
	 * 录入教师信息
	 * 
	 * @param t
	 * @return
	 */
	boolean addTeacherMsg(Teacher t);

	/**
	 * 查询学院
	 * 
	 * @return
	 */
	List<College> queryCollege();

	/**
	 * 添加专业
	 * 
	 * @param m
	 * @return
	 */
	boolean addMajor(Major m);

	/**
	 * 条件查看选课记录
	 * 
	 * @param map
	 * @return
	 */
	List<Map<String,String>> queryStuSelectedCourse(String condition);



	/**
	 * 查询所有课程
	 * 
	 * @return
	 */
	List<Course> queryAllCourse(long sid);

	/**
	 * 修改已选课程
	 * 
	 * @param sid
	 * @param oldCid
	 * @param newCid
	 * @return
	 */
	boolean alterSelectedCourse(long sid, int oldCid, int newCid);

	/**
	 * 条件查找学生信息
	 * 
	 * @param condition
	 * @return
	 */
	List<Student> queryStudentByCodition(String condition);

	/**
	 * 条件查询学生信息,以vector返回
	 * 
	 * @param list
	 * @return
	 */
	List<Vector> queryStudentByCoditionToVectoer(List<Map<String, String>> list);

	/**
	 * 修改学生信息
	 * 
	 * @param student
	 * @return
	 */
	boolean alterStudent(Student student);

	/**
	 * 删除学生
	 * 
	 * @param sid
	 * @return
	 */
	boolean deleteStudent(long sid);

	/**
	 * 查询教师信息
	 * 
	 * @param condition
	 * @return
	 */
	List<Map<String, String>> queryTeacherByCondition(String condition);

	/**
	 * 查询教师信息
	 * 
	 * @param list
	 * @return
	 */
	List<Vector> queryTeacherByConditionToVector(List<Map<String, String>> list);

	/**
	 * 删除教师
	 * 
	 * @param tid
	 * @return
	 */
	boolean deleteTeacher(int tid);

	/**
	 * 修改教师记录
	 * @param map
	 * @return
	 */
	boolean alterTeacher(Map<String,String> map);

	/**
	 * 重置管理员密码
	 * @param aid
	 * @return
	 */
	boolean resetAdminPsw(int aid);

	/**
	 * 重置教师密码
	 * @param tid
	 * @return
	 */
	boolean resetTeacherPsw(int tid);
	/**
	 * 重置教师密码
	 * @param sid
	 * @return
	 */
	boolean resetStudentPsw(long sid);

	/**
	 * 分页查询课程
	 */
	List<Map<String,String>> queryCourseByPage(Page<Map<String,String>> page);

	/**
	 * 查询课程总数
	 */
	int queryTotalCourseCount();

	/**
	 * 删除已选课程记录
	 * @param selectedCourses
	 * @return
	 */
	boolean deleteSelectedCourse(List<SelectedCourse> selectedCourses);
}
